// /**版本一 逻辑较为严密
//  * @param {number[]} nums
//  * @return {number[][]}
//  */
//  var subsets = function(nums) {
//     let res =[[]],curr=[],length=nums.length
//     if(length==0) return res
//     function tools(starIndex,len){
//         if(len==curr.length){
//             res.push([...curr])
//         }
//         for(let i=starIndex;i<length;i++){
//             curr.push(nums[i])
//             tools(i+1,len)
//             curr.pop()
//         }
//     }
//     let count =length
//     while(count){
//         tools(0,count)
//         count--
//     }
//     return res
// };

// console.log(subsets([1,2,3]));



/**版本二
 * @param {number[]} nums
 * @return {number[][]}
 */
 var subsets = function(nums) {
    let res =[],curr=[],length=nums.length
    if(length==0) return res
    function tools(starIndex){
        res.push([...curr])
        for(let i=starIndex;i<length;i++){
            curr.push(nums[i])
            tools(i+1)
            curr.pop()
        }
    }
    tools(0)
    return res
};
console.log(subsets([1,2,3]));
